from abc import ABC, abstractmethod
from typing import List, Any


class EmbeddingInterface(ABC):
    """
    一个标准接口，用于将文本转换为向量表示。
    """

    @abstractmethod
    async def embed(self, texts: List[str]) -> List[List[float]]:
        """
        将一批文本转换为一批向量。

        Args:
            texts: 需要进行向量化的文本列表。

        Returns:
            一个列表，其中每个元素是对应文本的浮点数向量。
        """
        pass

    @abstractmethod
    def get_native_model(self) -> Any:
        """
        获取底层的、由 LlamaIndex 或其他第三方库提供的原始模型对象。
        这对于需要直接与第三方库组件（如某些解析器或后处理器）交互的场景至关重要。

        Returns:
            Any: 底层的原始模型实例。
        """
        pass 